package Day_0219.Redis;

/**
 * @author zxc
 * @date 2023/02/19 10:26
 **/
public class Redis_Distributed_Lock {
    public static void main(String[] args) {
        /**
         * 谈一谈对于Redis所实现的分布式锁的理解
         * ===》
         * 1.Redis实现分布式锁的原理
         * （1）先拿setnx来争抢锁;
         * （2）获取锁之后，使用 expire给锁加一个过期时间，防止锁忘记了释放。
         *
         * 2.接着问如果在setnx之后执行expire之前进程意外crash或者要重启维护了，那会怎么样？
         * （1）由于setnx 和 expire命令，并不是原子性的，
         *  所以可能会出现成功获取到锁 && 并未对于锁设置过期时间的问题，导致锁无法释放的问题;
         * （2）我记得set指令有非常复杂的参数，这个应该是可以同时把setnx和expire合成一条指令来用的！
         *  ===》 即，可以将在 setnx指令后面添加指定过期时间的参数，从而实现setnx + expire命令的原子性;
         */
    }
}
